Databases hold data in tables. The tables are made up of pages of data where a page of data is determined to be a useful size to be loaded into memory and operated upon without being so large that it slows down the system. The pages store keys of data and processes often operate on the keys data.
A common issue is that multiple processes attempt to access the same data at the very same time. To prevent corruption of data, a particular piece of data may be locked such that only one process may operate on the piece of data at a time. While this prevents data corruption, it slows processing as the second process has to wait for the first process to finish operating on the data.
In a large, high throughput database, the problem may be even more complicated. Under some circumstances like memory optimization or imperfect index matching, etc., the database may attempt to put a page lock along with a row lock or just put a page lock without putting on a row lock. As a result, the system may become so overwhelmed that entire pages of the table in the database may be locked. This means every piece of data on the locked page cannot be accessed until the page lock is released. Entire page locking can have negative performance effects.